package 股票的最大利润;

//假设把某股票的价格按照时间先后顺序存储在数组中，请问买卖该股票一次可能获得的最大利润是多少？
public class Solution {
    public int maxProfit(int[] prices) {
        //蛮力法，硬求所有的数对组合，找到差值最大的

        //如果卖出价固定，那么前面的购入价越小，利润越大
        //当前第i天的卖出价，前面i-1天的最小值
        if (prices.length == 0)
            return 0;
        if (prices.length == 1)
            return 0;
        int minbuy = prices[0];
        int maxminus = prices[1] - minbuy;
        //前面相当于已经遍历了0，1，所以直接从2开始
        for (int i = 2; i < prices.length; i++) {
            if (prices[i - 1] < minbuy)//要对前i-1个数字的最小值，进行动态替换，
                minbuy = prices[i - 1];
            int currentprice = prices[i];
            if (currentprice - minbuy > maxminus)//同时，还要让当前数字，i进行最大差值的计算，所以这样设计
                maxminus = currentprice - minbuy;
        }
        if (maxminus <= 0)
            return 0;
        return maxminus;
    }
}
